home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / PTR-TCL v2.1 / 2) TCL Munger / main.c < prev    next >
Text File  |  1994-02-17  |  3KB  |  174 lines

  1. /*
  2.  * main.c
  3.  */
  4.  
  5.  
  6. void Idle ( void ) ;
  7. void Message ( unsigned char * ) ;
  8. extern void DoneLine ( void ) ;
  9.  
  10. unsigned char * folder_to_munge = "\pTO MUNGE" ;
  11. unsigned char * message_file = "\pMESSAGES" ;
  12.  
  13. Handle windowText = NULL ;
  14. WindowPtr window = NULL ;
  15. short vRefNum = 0 ;
  16. Boolean done = 0 ;
  17.  
  18.  
  19. extern void MungeFolder ( long parID ) ;
  20.  
  21.  
  22. static void
  23. Try ( short code ) {
  24.  
  25.     if ( code ) {
  26.         DebugStr ( "\pFailure!" ) ;
  27.     }
  28. }
  29.  
  30.  
  31. static void
  32. InitMac ( ) {
  33.     InitGraf ( & qd . thePort ) ;
  34.     InitFonts ( ) ;
  35.     InitWindows ( ) ;
  36.     InitMenus ( ) ;
  37.     TEInit ( ) ;
  38.     InitDialogs ( NULL ) ;
  39. }
  40.  
  41.  
  42. static void
  43. UpdateWindow ( ) {
  44.  
  45. Rect r = window -> portRect ;
  46.  
  47.     InsetRect ( & r , 3 , 3 ) ;
  48.     TextFont ( GetAppFont ( ) ) ;
  49.     TextSize ( GetDefFontSize ( ) ) ;
  50.     HLock ( windowText ) ;
  51.     TextBox ( * windowText , GetHandleSize ( windowText ) , & r , teJustLeft ) ;
  52.     HUnlock ( windowText ) ;
  53. }
  54.  
  55.  
  56. static void
  57. Click ( EventRecord * er ) {
  58.  
  59. WindowPtr win ;
  60. short code ;
  61. Rect limit = ( * GetGrayRgn ( ) ) -> rgnBBox ;
  62.  
  63.     InsetRect ( & limit , 3 , 3 ) ;
  64.     code = FindWindow ( er -> where , & win ) ;
  65.     switch ( code ) {
  66.     case inSysWindow :
  67.         SystemClick ( er , win ) ;
  68.         break ;
  69.     case inDrag :
  70.         DragWindow ( win , er -> where , & limit ) ;
  71.         break ;
  72.     }
  73. }
  74.  
  75.  
  76. void
  77. Idle ( ) {
  78. EventRecord er ;
  79.  
  80.     WaitNextEvent ( -1 , & er , 0L , NULL ) ;
  81.     switch ( er . what ) {
  82.     case mouseDown :
  83.         Click ( & er ) ;
  84.         break ;
  85.     case updateEvt :
  86.         SetPort ( window ) ;
  87.         BeginUpdate ( window ) ;
  88.         EraseRect ( & ( window -> portRect ) ) ;
  89.         UpdateWindow ( ) ;
  90.         EndUpdate ( window ) ;
  91.         break ;
  92.     }
  93. }
  94.  
  95.  
  96. static void
  97. SetWindowText ( unsigned char * string ) {
  98.  
  99.     PtrToXHand ( string + 1 , windowText , * string ) ;
  100.     SetPort ( window ) ;
  101.     UpdateWindow ( ) ;
  102. }
  103.  
  104.  
  105. void
  106. Message ( unsigned char * message ) {
  107.  
  108. static short refNum = 0 ;
  109. long len ;
  110. static unsigned long last = 0 ;
  111.  
  112.     do {
  113.         Idle ( ) ;
  114.     } while ( TickCount ( ) < last + 5 ) ;
  115.     last = TickCount ( ) ;
  116.  
  117.     if ( ! message ) {
  118.         if ( refNum ) {
  119.             FSClose ( refNum ) ;
  120.             FlushVol ( NULL , 0 ) ;
  121.         }
  122.         refNum = 0 ;
  123.         return ;
  124.     }
  125.     if ( ! refNum ) {
  126.         Create ( message_file , 0 , 'MPS ' , 'TEXT' ) ;
  127.         Try ( FSOpen ( message_file , 0 , & refNum ) ) ;
  128.         Try ( SetEOF ( refNum , 0L ) ) ;
  129.     }
  130.     if ( refNum ) {
  131.         len = * message ;
  132.         Try ( FSWrite ( refNum , & len , message + 1 ) ) ;
  133.     }
  134.     SetWindowText ( message ) ;
  135. }
  136.  
  137.  
  138. static void
  139. MakeWindow ( ) {
  140.  
  141.     window = GetNewWindow ( 128 , NULL , NULL ) ;
  142.     if ( ! window ) {
  143.         Try ( -192 ) ;
  144.     }
  145.     windowText = NewHandle ( 0L ) ;
  146.     Message ( "\pWelcome!\r" ) ;
  147.     SelectWindow ( window ) ;
  148.     ShowWindow ( window ) ;
  149. }
  150.  
  151.  
  152. void
  153. main ( ) {
  154.  
  155. CInfoPBRec rec ;
  156.  
  157.     InitMac ( ) ;
  158.     MakeWindow ( ) ;
  159.     rec . hFileInfo . ioNamePtr = folder_to_munge ;
  160.     rec . hFileInfo . ioVRefNum = 0 ;
  161.     rec . hFileInfo . ioDirID = 0 ;
  162.     rec . hFileInfo . ioFDirIndex = 0 ;
  163.     Try ( PBGetCatInfoSync ( & rec ) ) ;
  164.     if ( rec . hFileInfo . ioFlAttrib & 0x10 ) {    
  165.         MungeFolder ( rec . hFileInfo . ioDirID ) ;
  166.         DoneLine ( ) ;
  167.     } else {
  168.         Message ( "\pIt's not a folder!" ) ;
  169.     }
  170.     Message ( "\pClick To Exit\r" ) ;
  171.     Message ( NULL ) ;
  172.     Idle ( ) ;
  173. }
  174.